package com.xd.core.business.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xd.core.business.entity.Contract;
import com.xd.core.business.entity.IncomingCommonLoan;
import com.xd.core.business.entity.IncomingUrgentContact;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 放款表
 * </p>
 *
 * @author ZX
 * @since 2025-02-27
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="OutInfo对象", description="放款表")
public class OutInfoVo implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "放款id")
    private Integer outId;

    @ApiModelProperty(value = "姓名")
    private String name;

    @ApiModelProperty(value = "业务状态")
    private Integer status;

    @ApiModelProperty(value = "进件id")
    private Integer incomingId;

    @ApiModelProperty(value = "进件单号")
    private String incomingOrder;

    @ApiModelProperty(value = "手机号")
    private String phone;

    @ApiModelProperty(value = "身份证")
    private String idCard;

    @ApiModelProperty(value = "实际放款金额")
    private BigDecimal outAmount;

    @ApiModelProperty(value = "产品名称")
    private String productName;

    @ApiModelProperty(value = "放款状态(0--待放款,1--放款中,2--放款完成 ,3--放款失败，4--退款)")
    private String outStatus;

    @ApiModelProperty(value = "产品类型")
    private String type;

    @ApiModelProperty(value = "还款方式")
    private String loanMethod;

    @ApiModelProperty(value = "贷款期限")
    private Integer term;

    @ApiModelProperty(value = "还款频率（0--天，1--月，2--周）")
    private String repayFrequency;

    @ApiModelProperty(value = "借款用途")
    private String used;

    @ApiModelProperty(value = "借款开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd", shape = JsonFormat.Shape.STRING, timezone = "GMT+8")
    private Date outStartTime;

    @ApiModelProperty(value = "借款结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd", shape = JsonFormat.Shape.STRING, timezone = "GMT+8")
    private Date outEndTime;

    @ApiModelProperty(value = "贷款合同编号")
    private String loanContractNo;

    @ApiModelProperty(value = "担保人姓名")
    private String guarantorName;

    @ApiModelProperty(value = "担保人手机号")
    private String guarantorPhone;

    @ApiModelProperty(value = "担保人关系")
    private String guarantorRelation;

    @ApiModelProperty(value = "担保人身份证")
    private String guarantorIdCard;

    @ApiModelProperty(value = "担保人身份证正面")
    private String guarantorIdCardFront;

    @ApiModelProperty(value = "担保人身份证反面")
    private String guarantorIdCardReverse;

    @ApiModelProperty(value = "担保人邮箱")
    private String guarantorMail;

    @ApiModelProperty(value = "担保人地址")
    private String guarantorAddress;

    @ApiModelProperty(value = "授信金额")
    private BigDecimal amount;

    @ApiModelProperty(value = "已提款金额")
    private String outLoanTotal;

    @ApiModelProperty(value = "剩余授信金额")
    private String amountRest;

    @ApiModelProperty(value = "授信到期日期")
    @JsonFormat(pattern = "yyyy-MM-dd", shape = JsonFormat.Shape.STRING, timezone = "GMT+8")
    private Date expireTime;

    @ApiModelProperty(value = "有无共同借款人")
    private String commonLoanYes;

    @ApiModelProperty(value = "借款人账户名")
    private String accountName;

    @ApiModelProperty(value = "借款人收款账户")
    private String receivingAccount;

    @ApiModelProperty(value = "借款人开户银行")
    private String bank;

    @ApiModelProperty(value = "还款账号")
    private String repayAccount;

    @ApiModelProperty(value = "还款开户行")
    private String repayCardBank;

    @ApiModelProperty(value = "还款账户名")
    private String repayName;

    @ApiModelProperty(value = "是否(签约完成--待放款) ----(0--是,1--否")
    private String flag;

    @ApiModelProperty(value = "共同借款人")
    private List<IncomingCommonLoan> incomingCommonLoans;

    @ApiModelProperty(value = "紧急联系人")
    private List<IncomingUrgentContact> incomingUrgentContacts;

    @ApiModelProperty(value = "绑卡状态(0--未绑定,1--已绑定)")
    private String cardStatus;

    @ApiModelProperty(value = "银行预留手机号")
    private String bankPhone;

    @ApiModelProperty(value = "支付通道")
    private String payPass;
}
